#include "..\CookHeader.h"

typedef struct _DoubleNode {
	struct _DoubleNode* pLink = NULL;	//  ũ
	string data;
	struct _DoubleNode* nLink = NULL;	//  ũ
} DoubleNode;

Array <DoubleNode*> memory;
DoubleNode* head, * current, * pre;
Array <string> dataArray = { "", "", "", "糪", "ȿ" };

void printDoubleNodes(DoubleNode* start) {
	DoubleNode* current = start;
	if (current->nLink == NULL)
		return;
	print("-->");
	print(current->data);
	while (current->nLink != NULL) {
		current = current->nLink;
		print(current->data);
	}
	println("");
	print("-->");
	print(current->data);
	while (current->pLink != NULL) {
		current = current->pLink;
		print(current->data);
	}
	println("");
}

void freeMemory() { // Ҵ   ޸𸮸 Ѵ.
	for (int i = 0; i < len(memory); i++)
		delete memory[i];
}

int main() {
	DoubleNode* node = new DoubleNode;
	node->data = dataArray[0];					// ù ° 
	head = node;
	memory.push_back(node);

	for (int i = 1; i < len(dataArray); i++) {	//  °  
		string data = dataArray[i];
		pre = node;
		node = new DoubleNode;
		node->data = data;
		pre->nLink = node;
		node->pLink = pre;
		memory.push_back(node);
	}
	printDoubleNodes(head);

	freeMemory();
}